package com.ruoyi.trainingManagement.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

import jakarta.validation.constraints.NotBlank;

/**
 * 培养方案管理对象 training_program
 * 
 * @author chenxl
 * @date 2025-04-15
 */
public class trainingProgram extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
   // private String id;

    /** 方案编号 */
    @Excel(name = "方案编号")
    @NotBlank(message = "名称不能为空")
    private String programCode;

    /** 方案名称 */
    @Excel(name = "方案名称")
    private String name;

    /** 适用学生类型 */
    @Excel(name = "适用学生类型")
    private Long studentType;

    /** 所属学院id */
    @Excel(name = "所属学院id")
    private String collegeId;

    /** 总学分要求 */
    @Excel(name = "总学分要求")
    private Long totalCredits;

    /** 专业ID */
    @Excel(name = "专业ID")
    private String majorId;

    /**二级学科ID*/
    @Excel(name = "二级学科ID")
    private String secondLevelSubjectId;

    /**研究方向ID*/
    @Excel(name = "研究方向ID")
    private String researchDirectionId;

    /** 英文名称 */
    @Excel(name = "英文名称")
    private String englishName;

    /** 学位课学分 */
    @Excel(name = "公共必修课学分")
    private String degreeCourseCredit;

    /** 必修环节学分 */
    @Excel(name = "专业必修课学分")
    private Long requiredCourseCredits;

    @Excel(name = "专业选修课学分")
    private Long electiveCourseCredits;


    @Excel(name = "实践环节学分")
    private Long practiceCredits;

    /** 年级 */
    @Excel(name = "年级")
    private Long grade;

    /** 培养方案类型 */
    @Excel(name = "培养方案类型")
    private Long cultureProgramType;

    /** 定制时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "定制时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date customTime;

    /** 培养方案附件上传 */
    @Excel(name = "培养方案附件上传")
    private String attachmentUploadPath;

    /** 限制条件 */
    @Excel(name = "限制条件")
    private String limitingCondition;

    /** 审核状态 */
    @Excel(name = "审核状态")
    private Long status;

    /**人数amount*/
    private Long amount;


    public void setId(String id)
    {
        this.id = id;
    }

    public String getId()
    {
        return id;
    }

    public void setProgramCode(String programCode) 
    {
        this.programCode = programCode;
    }

    public String getProgramCode() 
    {
        return programCode;
    }

    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }

    public void setStudentType(Long studentType) 
    {
        this.studentType = studentType;
    }

    public Long getStudentType() 
    {
        return studentType;
    }

    public void setCollegeId(String collegeId) 
    {
        this.collegeId = collegeId;
    }

    public String getCollegeId() 
    {
        return collegeId;
    }

    public void setTotalCredits(Long totalCredits) 
    {
        this.totalCredits = totalCredits;
    }

    public Long getTotalCredits() 
    {
        return totalCredits;
    }

    public void setMajorId(String majorId) 
    {
        this.majorId = majorId;
    }

    public String getMajorId() 
    {
        return majorId;
    }

    public String getSecondLevelSubjectId() {
        return secondLevelSubjectId;
    }

    public void setSecondLevelSubjectId(String secondLevelSubjectId) {
        this.secondLevelSubjectId = secondLevelSubjectId;
    }

    public String getResearchDirectionId() {
        return researchDirectionId;
    }

    public void setResearchDirectionId(String researchDirectionId) {
        this.researchDirectionId = researchDirectionId;
    }

    public void setEnglishName(String englishName) 
    {
        this.englishName = englishName;
    }

    public String getEnglishName() 
    {
        return englishName;
    }

    public void setDegreeCourseCredit(String degreeCourseCredit)
    {
        this.degreeCourseCredit = degreeCourseCredit;
    }

    public String getDegreeCourseCredit()
    {
        return degreeCourseCredit;
    }

    public void setRequiredCourseCredits(Long requiredCourseCredits) 
    {
        this.requiredCourseCredits = requiredCourseCredits;
    }

    public Long getRequiredCourseCredits() 
    {
        return requiredCourseCredits;
    }

    public Long getElectiveCourseCredits() {
        return electiveCourseCredits;
    }

    public void setElectiveCourseCredits(Long electiveCourseCredits) {
        this.electiveCourseCredits = electiveCourseCredits;
    }

    public Long getPracticeCredits() {
        return practiceCredits;
    }

    public void setPracticeCredits(Long practiceCredits) {
        this.practiceCredits = practiceCredits;
    }
    public void setGrade(Long grade) 
    {
        this.grade = grade;
    }

    public Long getGrade() 
    {
        return grade;
    }

    public void setCultureProgramType(Long cultureProgramType) 
    {
        this.cultureProgramType = cultureProgramType;
    }

    public Long getCultureProgramType() 
    {
        return cultureProgramType;
    }

    public void setCustomTime(Date customTime) 
    {
        this.customTime = customTime;
    }

    public Date getCustomTime() 
    {
        return customTime;
    }

    public void setAttachmentUploadPath(String attachmentUploadPath) 
    {
        this.attachmentUploadPath = attachmentUploadPath;
    }

    public String getAttachmentUploadPath() 
    {
        return attachmentUploadPath;
    }

    public void setLimitingCondition(String limitingCondition) 
    {
        this.limitingCondition = limitingCondition;
    }

    public String getLimitingCondition() 
    {
        return limitingCondition;
    }

    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }

    public Long getAmount() {
        return amount;
    }

    public void setAmount(Long amount) {
        this.amount = amount;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("programCode", getProgramCode())
            .append("name", getName())
            .append("studentType", getStudentType())
            .append("collegeId", getCollegeId())
            .append("totalCredits", getTotalCredits())
            .append("majorId", getMajorId())
            .append("secondLevelSubjectId", getSecondLevelSubjectId())
            .append("researchDirectionId", getResearchDirectionId())
            .append("englishName", getEnglishName())
            .append("degreeCourseCredit", getDegreeCourseCredit())
            .append("requiredCourseCredits", getRequiredCourseCredits())
            .append("electiveCourseCredits", getElectiveCourseCredits())
            .append("practiceCredits", getPracticeCredits())
            .append("grade", getGrade())
            .append("cultureProgramType", getCultureProgramType())
            .append("customTime", getCustomTime())
            .append("attachmentUploadPath", getAttachmentUploadPath())
            .append("limitingCondition", getLimitingCondition())
            .append("status", getStatus())
            .append("amount", getAmount())
            .toString();
    }



}
